// 用户相关的状态管理
import { createSlice } from '@reduxjs/toolkit'
import { request } from '@/utils'
// 从中转index 中导入
import { getToken, setToken as _setToken } from '@/utils'

// const TOKENKEY = 'token_key'
const userStore = createSlice({
	name: 'user',

	initialState: {
		token: getToken() || ''
	},

	reducers: {
		setToken(state, action) {
			state.token = action.payload

			_setToken(state.token)
		}
	}
})

// 异步方法封装
const fetchLogin = (loginForm) => {
	// 这个 dispatch 参数是什么意思 （是修改同步）  第二个参数 是传参loginForm
	return async (dispatch) => {
		const res = await request.post('/authorizations', loginForm)
		// 提交同步action进行token的存储
		dispatch(setToken(res.data.token))
	}
}
// 解构出actionCreater
const { setToken } = userStore.actions

// 获取reducer函数  这个是什么意思？？？？？？
const userReducer = userStore.reducer

export { setToken, fetchLogin }
// 这个是默认的导出
export default userReducer
